package com.example.Testclass;

/*
public class Test4 {
    */
/*
    局部代码块
	位置: 方法中定义
	作用: 限定变量的生命周期，及早释放，提高内存利用率
	*//*

    public static void main(String[] args) {
        {
            int a = 10;
            System.out.println(a);
        }

        //System.out.println(a);
    }
}
*/



/*
public class Test4 {
    */
/*
        构造代码块
        位置: 类中方法外定义
        特点: 每次构造方法执行的时，都会执行该代码块中的代码，并且在构造方法执行前执行
        作用: 将多个构造方法中相同的代码，抽取到构造代码块中，提高代码的复用性
  *//*

    public static void main(String[] args) {
        student stu1 = new student();
        student stu2 = new student(10);
    }
}

class student {

    {
        System.out.println("好好学习");
    }

    public student() {
        System.out.println("空参数构造方法");
    }

    public student(int a) {
        System.out.println("带参数构造方法。。。。");
    }
}*/


public class Test4 {

    /*
        静态代码块
        位置: 类中方法外定义
        特点: 需要通过static关键字修饰，随着类的加载而加载，并且只执行一次
        作用: 在类加载的时候做一些数据初始化的操作
     */
    public static void main(String[] args) {
        P p1 = new P();
        P p2 = new P(10);
    }
}

class P {
    static {
        System.out.println("我是静态代码块");
    }

    public P() {
        System.out.println("我是空参数构造方法");
    }

    public P(int a) {
        System.out.println("我是带参数构造方法");
    }
}